#######通用Makefile模板########

# 目标文件名字

TARGET = AcceptServer IOServer

MPATH = .

# 搜寻路径
VPATH = io/base io/epoll socket/base socket/tcpip

# obj文件存放了路径
OBJPATH = objs

# SRC = Main.cpp Socket_TCPIP.cpp Socket_Base.cpp
# 找出扩展名是cpp的，放进OBJS_SRC
CODE_SRC = $(foreach x, $(VPATH), $(notdir $(wildcard $(x)/*.cpp)))
MAIN_SRC = $(foreach x, $(MPATH), $(notdir $(wildcard $(x)/*.cpp)))

# object文件,只是改变文件名
CODE_OBJS = $(CODE_SRC:.cpp=.o)
MAIN_OBJS = $(MAIN_SRC:.cpp=.o)

# 编译器

CC = g++

# 头文件路径，可以任意指定头文件

INCLUDE = -I/usr/include/

# 链接库

LINKPARAM = 

# 编译选项

CFLAGS = -ansi -g -Wall
 

all:$(TARGET)

# 定义目标文件生成规则

$(TARGET):$(MAIN_OBJS) $(CODE_OBJS)
	echo $(TARGET)
	$(CC) -o AcceptServer $(LINKPARAM) $(CODE_OBJS) Main.o
	$(CC) -o IOServer $(LINKPARAM) $(CODE_OBJS) IOServer.o
	#$(CC) -o $(TARGET) $(LINKPARAM) $(CODE_OBJS)
	mv $(MAIN_OBJS) $(CODE_OBJS) $(OBJPATH)

.SUFFIXES:.cpp

# 定义obejct文件生成规则

%.o:%.cpp
	$(CC) $(LINKPARAM) $(INCLUDE) $(CFLAGS) -c $<

# 定义清理函数

clean:
	rm $(TARGET) $(MAIN_OBJS) $(CODE_OBJS)
	
test:
	@echo $(SRC)	
	
	
	
	
	
ifndef	mv_function
define	mv_function
echo KKKis
mv $1 $2

endef
endif
	
	
ifndef   chmod_function
define   chmod_function
echo kkkk
chmod $1 $2

endef 
endif 